package contegor.scire.core;

/**
 * {@link WithSubsequentTasks}s interface to which subsequent {@link Task}s can be added.
 * @see WithSubsequentTasks.
 * 
 * @version $Revision$
 * @author  Héctor Cirbián Pousa ($Author$)
 */
@Version("$Id$")
public interface WithSubsequentsExtensible <I,O> extends WithSubsequentTasks<I,O> {

  /**
   * Adds a {@link NeedsPrecedent} as subsequent {@link Task}.
   * It will call {@link NeedsPrecedent#setPrecedent(Task)}.
   *
   * @param subsequent {@link NeedsPrecedent} that will use in its processing results from this one.
   * @return returns always <code>this</code> for chain adding.
   */
  public WithSubsequentTasks<I,O> withIt(NeedsPrecedent<? super I,O> subsequent);

}
